﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioG1.Persistencia.NHibernate;
using CondominioG1.Dominio;

namespace CondominioG1.Pruebas.TestDAO
{
    [TestFixture]
    public class TestCuotaDAO
    {
        private CuotaDAO CuotaDao = new CuotaDAO();

        [Test]
        public void TestCrear()
        { 
            // Instanciando la clase a probar
            Cuota nuevaCuota = new Cuota();
            nuevaCuota.Estado = false;
            nuevaCuota.FecPago = DateTime.Parse("30/07/2011");
            nuevaCuota.FormaPago = "cuotas";
            nuevaCuota.Importe = 0;
            nuevaCuota.Numero = 1;
            nuevaCuota.Periodo = "201107";
            nuevaCuota.Vencimiento = DateTime.Parse("30/07/2011");
           
           
            //Validamos que el usuario exista
            ViviendaDAO existeVivienda = new ViviendaDAO();
            Vivienda viviendaExiste = existeVivienda.Obtener("vivienda lote 10");
            nuevaCuota.Vivienda = viviendaExiste;

           
            // 2. Llamada al método del DAO a probar
            Cuota CuotaCreada = CuotaDao.Crear(nuevaCuota);

            // 3. Implementar las validaciones
            Assert.NotNull(CuotaCreada);
            Assert.AreEqual(nuevaCuota.Numero, CuotaCreada.Numero);
        }



        
        [Test]
        public void TestObtener()
        {
            // 1. Instanciamos el objeto TO
            int codigo = 1;
            // 2. Llamada al método del DAO a probar
            Cuota CuotaObtenida = CuotaDao.ObtenerInt(1);
            // 3. Implementar las validaciones
            Assert.NotNull(CuotaObtenida);
            Assert.AreEqual(codigo, CuotaObtenida.Numero);
            Assert.NotNull(CuotaObtenida.Numero);
        }



        [Test]
        public void TestModificar()
        {

            // 2. Instanciamos el objeto TO
            Cuota CuotaModificar = new Cuota();
            CuotaModificar.Estado = true;
            CuotaModificar.FecPago = DateTime.Parse("30/07/2011");
            CuotaModificar.FormaPago = "CONTADO";
            CuotaModificar.Importe = 1000;
            CuotaModificar.Numero = 10;
            CuotaModificar.Vencimiento = DateTime.Parse("30/07/2012");
            CuotaModificar.Periodo="201112";

            
            //ViviendaModificar.Residente

            // 3. Llamada al método del DAO a probar
            Cuota CuotaObtenida = CuotaDao.Modificar(CuotaModificar);
            // 4. Implementar las validaciones
            Assert.NotNull(CuotaObtenida);
            Assert.AreEqual(CuotaModificar.Numero, CuotaObtenida.Numero);

        }






        [Test]
        public void TestEliminar()
        {

            // 2. Instanciamos el objeto TO
            Cuota CuotaEliminar = new Cuota();
            CuotaEliminar.Numero = 10;
            // 3. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                CuotaDao.Eliminar(CuotaEliminar);
            });
            Assert.DoesNotThrow(delegate
            {
                CuotaDao.Eliminar(CuotaEliminar);
            });


            // 4. Implementar las validaciones
             Assert.NotNull(CuotaEliminar);
             Assert.NotNull(CuotaEliminar.Numero);



        }




    }
}